// import preloaderFull from '@/modules/preloader-full/preloader-full'
import searchParamParse from '@/modules/corejs/url/search-params'
import ajaxApi from '@/modules/ajax-api'
import TimeUpdate from '@/modules/corejs/time/time-update.js'

export default function initLoad ({ bus, router, $bus }) {
  // preloaderFull.show()

  let cache = {
    isTiming: false, // 是否开启定时缓存
    open () {
      if (window.jselectronic) { // 非缓存情况。有缓存接口的班牌设备情况
        if (this.isTiming) {
          // 定时缓存，0点执行。
          let timeUpdate = new TimeUpdate()
          timeUpdate.start(() => {
            let d = new Date()
            if (d.getHours() === 0) {
              ajaxApi.cacheAll()
            }
          }, 1000 * 60 * 60) // 每小时执行检测是否到 0 点

          this.isTiming = true
        }

        // 页面运行60秒后进行缓存
        setTimeout(function () {
          ajaxApi.cacheAll()
        }, 60000)
      }
    }
  }

  // app 推送
  window.transmitData = function ({ equipmentCode, templateid, typeid, templateurl }) {
    bus.equipmentCode = equipmentCode
    ajaxApi.equipmentCode = equipmentCode
    ajaxApi.templateid = templateid
    ajaxApi.cache = {} // 清缓存，否则请求到的是上一次的数据
    if (typeid * 1 === 3) {
      /* eslint-disable no-constant-condition */
      if (templateurl) {
        ajaxApi.getDataTemp3(templateurl).then(d => {
          let templateUrl = ajaxApi.templateUrl = d.templateUrl
          switch (templateUrl) {
            case 'appraise_noticeboard': case 'appraise_noticeboard_month':
              // 校牌美星荣誉
              router.push({ name: 'temp3inside', query: { reload: Date.now(), periodType: templateUrl } })
              break
            case 'dorm_rules_view':
              // 广雅学校宿舍常规检查公示牌
              router.push({ name: 'temp3dorm', query: { reload: Date.now() } })
              break
            default:
              // 校园文化定制模板展示
              router.push({ name: 'temp3index', query: { reload: Date.now() } })
              break
          }
        })
      } else {
        console.error('templateurl:' + templateurl)
      }
      // if (templateurl.indexOf('appraise_noticeboard') > -1) {
      //   // 非 iframe, 内部模板
      //   router.push({ name: 'temp3inside', query: { reload: Date.now() } })
      // } else {
      //   // iframe, 外部链接
      //   router.push({ name: 'temp3index', query: { templateurl } })
      // }
    } else {
      switch (templateid * 1) {
        case 1:
          router.push({ name: 'temp1index', query: { _: Date.now() } })
          break
        case 2:
          // router.push({name: 'temp1exam', query: { _: Date.now() }})
          router.push({ name: 'temp-exam', query: { _: Date.now() } })
          break
        case 3:
          router.push({ name: 'temp1msg', query: { _: Date.now() } })
          break
        case 4:
          router.push({ name: 'temp4index', query: { reload: Date.now() } })
          cache.open()
          break
        case 5:
          router.push({ name: 'temp5index', query: { reload: Date.now() } })
          cache.open()
          break
        case 6:
          router.push({ name: 'temp6index', query: { reload: Date.now() } })
          cache.open()
          break
        case 7:
          router.push({ name: 'temp7index', query: { reload: Date.now() } })
          cache.open()
          break
        case 8:
          router.push({ name: 'temp8index', query: { reload: Date.now() } })
          cache.open()
          break
        // case 6:
        //   router.push({ name: 'temp6index' })
        //   // 刷新模板2。当前就是temp2index模板情况，复用情况才会调用
        //   // 本来是路由守卫 beforeRouteUpdate 实现，但从子模版过来情况，多做了几步没必要的更新
        //   bus.$emit('temp5indexUpdate')
        //   break
        case 90:
          // reload 决定是否更新
          router.push({ name: 'temp90index', query: { reload: Date.now() } })
          break
      }
    }

    // 紧急通知更新
    $bus.$emit('urgentMsgUpdate')
  }

  // 定位
  window.setCity = function (cityName) {
    bus.cityName = $bus.cityName = cityName
  }

  // 缓存接口
  // window.cacheAll = function () {
  //   ajaxApi.cacheAll()
  // }

  // 开发环境：模拟app调用
  if (process.env.NODE_ENV !== 'production') {
    require('./mock.config').default.mockTransmitData()
  }

  // url 查询参数初始，预览用
  let params = searchParamParse(location.search)
  if (params.templateid || params.typeid) {
    window.transmitData(params)
  }

  // 设置默认城市
  window.setCity('广东省,深圳市')

  // 访问缓存情况。显示缓存前的 templateid 模板
  if (ajaxApi.isCache) {
    ajaxApi.getCacheData().then(data => {
      window.transmitData({
        equipmentCode: 'cache',
        templateid: data.templateid
      })
    })
  }
}
